unit form_rotate;

{$mode objfpc}{$H+}

interface

uses
    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
    StdCtrls, Math, picture_core, picture_publ;

type

    { Tfm_rotate }

    Tfm_rotate = class(TForm)
        bt_apply: TButton;
        txt_rot_cent_x: TLabeledEdit;
        txt_rot_cent_y: TLabeledEdit;
        txt_rot_angle: TLabeledEdit;
        procedure bt_applyClick(Sender: TObject);
        procedure FormShow(Sender: TObject);
    private
    public
    end;

var
    fm_rotate: Tfm_rotate;

implementation

{$R *.lfm}

// Загрузка формы
procedure Tfm_rotate.FormShow(Sender: TObject);
begin
    txt_rot_cent_x.Text := FloatToStr(pic_graph.get_pic_cent.X);
    txt_rot_cent_y.Text := FloatToStr(pic_graph.get_pic_cent.Y);
end;

// Поворот изображения
procedure Tfm_rotate.bt_applyClick(Sender: TObject);
var
    rotate_cen: TRPoint;
    rotate_ang: Real;
begin

    if (txt_rot_cent_x.Text = '') or (txt_rot_cent_y.Text = '') then
    begin
        ShowMessage('Отсутствуют координаты точки поворота.');
        exit;
    end;

    if (txt_rot_angle.Text = '') then
    begin
        ShowMessage('Отсутствует угол поворота изображения.');
        exit;
    end;

    with rotate_cen do
    begin
        X := StrToFloat(txt_rot_cent_x.Text);
        Y := StrToFloat(txt_rot_cent_y.Text);
    end;

    rotate_ang := StrToFloat(txt_rot_angle.Text);
    rotate_ang := DegToRad(rotate_ang);

    pic_graph.conv_rot(rotate_cen, rotate_ang);
    pic_graph.conv_apply();
    fm_rotate.Close();

end;

end.

